New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The big, ugly, pending pull request #11
Conversation
And a remark that the keys listed are the default keys, in case we allow the user to change them (via config file or UI) later.
We should probably use the same type for monsters, to have a number with which to indicate a targeted monster. Monsters probably don't need to carry their numbers in them, unlike heroes, because they don't get moved to and from any "current monster" state field.
TODO: some actions should behave differently in look mode, e.g., movement
TODO: currently all but on hero must remain on level 1. Either hero switching in look mode or via number keys will solve that.
Plus a few tweaks around.
I'll prepare a patch to differentiate numpad and top row number keys.
So it's now possible to move more than one hero to levels > 1.
TODO: perhaps make the options case sensitive; it costs too much debugging.
…omplete Plus a bit of clean-up.
That's after I myself didn't remember what the components are used for. Now it's documented in record field names.
This is short form of "player-controlled hero". Other heroes and all heroes in general are just "heroes".
Exactly as proposed; minimal changes to get it working again.
I misuderstood how the action monad "abort" propagates through nested actions.
That's because we really want hero selection to be a purely UI distinction; otherwise players will waste time micromanaging cycling among heroes before the end of the turn.
Via a tmp hack, until the TODOs below playerCommand implemented.
…g score Only heroes from the current level are taken into account, or leaving one hero camping near the exit would be a too powerful tactics.
This is to to let the keys that request (more) information (help screen, item list for dropping, etc.) toggle display of the obtained information off. No two keys required ('?' and ' '), just tap '?' once, look, tap again.
The bug was wiping out savegame on every other save attempt. I've forgotten to set case sensitivity in some of the places config is created. Affects only my branch. With the new code it's much harder to make such a bug again.
…Hack The releases are not very common, so I'd advocate making the high scores available, so that the players can relate their scores to anything.
I see there is a lot of whitespace changes. Sorry about that --- I've spent enough time on the code that reformatting was very worthwhile for me. I think I was consistent in the changes and most of them adhere to one of the styles you used. Major changes:
|
About EDSLs for game content, with reflection: The refactorings of items vs. item kinds vs. effects and the same started for movables and now also started for tiles in the Allure fork, are a first step to have DSLs for building game content. The crucial point is that the game should be able to modify the content and dump the new definitions so that the content can be automatically pre-balanced each time new content is added and also continuously changed in response to player actions. Ideally the game would also be able to load the new definitions without recompiling. Also, ideally the DSLs would be EDSLs. These two minor goals are in conflict, though, because AFAIK Haskell does not have (comfortable) reflection and, anyway, reflection is a dangerously powerful tool. Edit: make that one DSL with 3 main types, since some effects will be shared, say, flaming sword, lava and fire elemental will share the flame effect primitive (or combinator taking duration, power, etc.). |
This reverts q part of commit 3cd423e concerning running, because the message for the last move of running was being lost.
Since gtk does not work with most 7.*, compatibility with 6.12.3 makes sense, even at the cost of incompatibility with 8.*.
messageMoreConfirm :: Bool -> Message -> Action Bool | ||
messageMoreConfirm blackAndWhite msg = do | ||
messageAdd (msg ++ more) | ||
if blackAndWhite then displayBW else display |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This indicates that it'd be better to have one function
display :: Bool -> ...
that takes the BW mode, and just pass the argument through.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
implemented in 7f49100
Ping! :D
I hope this fits the mood of LambdaHack. At least, the monsters have been preserved, though their behaviour is a bit more varied now. Feel free to pick and choose, of course, I'll just reapply the rejected commits as initial commits of Allure --- the distant SF fork.